package gui;

import javax.faces.bean.ManagedBean;

import basicas.organizacionais.Funcao;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;


import negocio.Fachada;

@ManagedBean // @ManagedBean(name=�msg�)
public class FuncaoBean {

    private Funcao funcao;
    private List<Funcao> listFuncao;
    private int codigoBusca;
    private List<Funcao> filteredFun; 

    public FuncaoBean() {        
            funcao = new Funcao();            
    }

    public void inserir() {
        Fachada fachada = Fachada.getInstancia();
        try {
            if(validarForm(funcao)){
                fachada.inserirFuncao(funcao);            
                funcao = null;          
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }

    public void alterar() {
        try {
            if(validarForm(funcao)){
                Fachada.getInstancia().alterarFuncao(funcao);                
            }
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }
    
    public void remover(Funcao funcao){	        
        try {            
            Fachada.getInstancia().removerFuncao(funcao);
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }                		
    }

    public String alterarFuncao(Funcao pfuncao){
        funcao = pfuncao;
        return "alterarfuncao.xhtml";
    }

    public void buscar(){
        funcao = Fachada.getInstancia().getFuncaoByCodigo(codigoBusca);
        if(funcao == null){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Função não encontrada!", ""));
        }
    }
    
    private boolean validarForm(Funcao funcao){
        boolean critica = false;
        
        if(funcao.getNome().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha o nome!", ""));
            critica = true;
        }
        if(funcao.getSalario() <= 0){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha o salário!", ""));
            critica = true;
        }         
        
        return critica ? false : true;
    }
    
    
    public List<Funcao> getListFuncao() {
        Fachada fachada = Fachada.getInstancia();
        listFuncao = fachada.listarFuncoes();
        return listFuncao;
    }
    
    public Funcao getFuncao() {
        return funcao;
    }

    public void setFuncao(Funcao funcao) {
        this.funcao = funcao;
    }

    public int getCodigoBusca() {
        return codigoBusca;
    }

    public void setCodigoBusca(int codigoBusca) {
        this.codigoBusca = codigoBusca;
    }

    public List<Funcao> getFilteredFun() {
        return filteredFun;
    }

    public void setFilteredFun(List<Funcao> filteredFun) {
        this.filteredFun = filteredFun;
    }

    
}
